cssprovider: Parse strings as identifiers when parsing property values
authorBenjamin Otte <otte@redhat.com>
Tue, 12 Apr 2011 01:22:22 +0000 (03:22 +0200)
committerBenjamin Otte <otte@redhat.com>
Wed, 18 May 2011 19:58:46 +0000 (21:58 +0200)
gtk/gtkcssprovider.c

index e785ed58f8aa57ee0977625badc5c4accc492d13..bd9f6c891410c6f6a2acf4da14c6124ab2d137ce 100644 (file)
@@ -1746,21 +1746,27 @@ scanner_apply_scope (GScanner    *scanner,
 
   if (scope == SCOPE_VALUE)
     {
-      scanner->config->cset_identifier_first = G_CSET_a_2_z G_CSET_A_2_Z G_CSET_DIGITS "@#-_";
+      scanner->config->cset_identifier_first = G_CSET_a_2_z G_CSET_A_2_Z G_CSET_DIGITS "@#-_\"'";
       scanner->config->cset_identifier_nth = G_CSET_a_2_z G_CSET_A_2_Z G_CSET_DIGITS "@#-_ +(),.%\t\n'/\"";
       scanner->config->scan_identifier_1char = TRUE;
+      scanner->config->scan_string_sq = FALSE;
+      scanner->config->scan_string_dq = FALSE;
     }
   else if (scope == SCOPE_BINDING_SET)
     {
       scanner->config->cset_identifier_first = G_CSET_a_2_z G_CSET_A_2_Z G_CSET_DIGITS "@#-_";
       scanner->config->cset_identifier_nth = G_CSET_a_2_z G_CSET_A_2_Z G_CSET_DIGITS "@#-_ +(){}<>,.%\t\n'/\"";
       scanner->config->scan_identifier_1char = TRUE;
+      scanner->config->scan_string_sq = TRUE;
+      scanner->config->scan_string_dq = TRUE;
     }
   else if (scope == SCOPE_SELECTOR)
     {
       scanner->config->cset_identifier_first = G_CSET_a_2_z G_CSET_A_2_Z "*@";
       scanner->config->cset_identifier_nth = G_CSET_a_2_z G_CSET_A_2_Z G_CSET_DIGITS "-_#.";
       scanner->config->scan_identifier_1char = TRUE;
+      scanner->config->scan_string_sq = TRUE;
+      scanner->config->scan_string_dq = TRUE;
     }
   else if (scope == SCOPE_PSEUDO_CLASS ||
            scope == SCOPE_NTH_CHILD ||
@@ -1769,6 +1775,8 @@ scanner_apply_scope (GScanner    *scanner,
       scanner->config->cset_identifier_first = G_CSET_a_2_z G_CSET_A_2_Z "-_";
       scanner->config->cset_identifier_nth = G_CSET_a_2_z G_CSET_A_2_Z G_CSET_DIGITS "-_";
       scanner->config->scan_identifier_1char = FALSE;
+      scanner->config->scan_string_sq = TRUE;
+      scanner->config->scan_string_dq = TRUE;
     }
   else
     g_assert_not_reached ();
@@ -2489,8 +2497,7 @@ parse_rule (GtkCssProvider  *css_provider,
           gtk_css_provider_error (css_provider,
                                   scanner,
                                   GTK_CSS_PROVIDER_ERROR,
-                                  scanner->token == G_TOKEN_STRING ? GTK_CSS_PROVIDER_ERROR_PROPERTY_VALUE
-                                                                   : GTK_CSS_PROVIDER_ERROR_SYNTAX,
+                                  GTK_CSS_PROVIDER_ERROR_SYNTAX,
                                   "Not a property value");
           gtk_css_scanner_pop_scope (scanner);
           goto find_end_of_declaration;